package com.lmn.statemachine;

import org.springframework.statemachine.StateContext;
import org.springframework.statemachine.guard.Guard;

/**
 * Guard 是一种特殊类型的状态机动作，它被用于限制转换发生的条件。
 * 在转换发生之前，它会检查这个条件是否满足，如果满足了，转换就会发生，否则转换就不会发生。
 */
public class PersonRealNameGuard implements Guard<CompanyStatus, CompanyEvents> {

    @Override
    public boolean evaluate(StateContext<CompanyStatus, CompanyEvents> context) {
        User user = (User) context.getMessage().getHeaders().get("user");
        assert user != null;
        if ("张三".equals(user.getName())) {
            System.out.println("guard 实名完成");
            return false;
        } else {
            System.out.println("guard 未实名");
            return true;
        }
    }
}
